import axios from 'axios'
// import router from '@/router'
import {
  Message
} from 'element-ui'

const instance = axios.create({
  time: 1000 * 60,
  withCredentials: true,
  // baseURL: 'http://www.functencent.com/'
  baseURL: 'http://localhost:3000/'
  // baseURL: 'https://music-api.heheda.top/'
  //  baseURL: 'http://192.168.0.9:3000/'
  //  baseURL: 'https://netease-cloud-music-api-iota-bice-37.vercel.app/'
})
instance.defaults.validateStatus = function () {
  return true
}
// 添加请求拦截器
instance.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  // get请求映射params参数
  if (config.method === 'get' && config.params) {
    let url = config.url + '?';
    for (const propName of Object.keys(config.params)) {
      const value = config.params[propName];
      var part = encodeURIComponent(propName) + "=";
      if (value !== null && typeof (value) !== "undefined") {
        if (typeof value === "object") {
          for (const key of Object.keys(value)) {
            if (value[key] !== null && typeof (value[key]) !== 'undefined') {
              let params = propName + '[' + key + ']';
              let subPart = encodeURIComponent(params) + '=';
              url += subPart + encodeURIComponent(value[key]) + '&';
            }
          }
        } else {
          url += part + encodeURIComponent(value) + "&";
        }
      }
    }
    url = url.slice(0, -1);
    config.params = {};
    config.url = url;
  }
  return config
}, error => {
  // 对请求错误做些什么
  Message.error({
    message: '请求超时!'
  })
  return Promise.reject(error)
})
// 添加响应拦截器
instance.interceptors.response.use(function (response) {
  const status = response.status
  // 在发送请求之前做些什么
  if (status === 200) {
    return Promise.resolve(response)
  } else if (status === 301) {
    Message.error({
      message: '请先登录!'
    })
    return false
  } else if (status == 403) {
    Message.error({
      message: "aplay错误"
    })
  } else {
    return Promise.reject(response)
  }
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(Message.error({
    message: "后台接口错误"+error
  }))
})


// const ajaxMethod = ['get', 'post']
// const api = {}
// ajaxMethod.forEach(method => {
//   // 数组取值的两种方式
//   api[method] = function (uri, data, config) {
//     return new Promise(function (resolve, reject) {
//       instance[method](uri, data, config)
//         .then(response => {
//           if (response.status === 200) {
//             resolve(response)
//           }
//         })
//         .catch(error => {
//           reject(error)
//         })
//     })
//   }
// })

export default instance